﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LEVNet
{
    namespace LEVNetDataPacket
    {
        #region Battery Pack Information
        public enum BatteryPackType
        {
            Unknow_BatteryType,
            LEV_ST_Gen2_Battery
        }
        public class DataPacket_BatteryPack
        {
            //public SystemMCUControllerType LBP_McuType { get; set; }
            public BatteryPackType BP_BatteryPackType { get; set; }
            public Version BP_FirmwareVersion { get; set; }
            public Version BP_HardwareVersion { get; set; }
            public DateTime BP_ManufactureDate { get; set; }
            public string BP_ManufactureName { get; set; }
            public int BP_SerialNumber { get; set; }
            public string BP_ProjectName { get; set; }
            public string BP_BarCode { get; set; }
            public byte[] BP_RawData_Of_OneWireSystemData { get; set; }
            public byte[] BP_RawData_Of_OneWireEepromData { get; set; }
        }
        #endregion

        #region RCSS Kit Information
        public enum ToolKitType
        {
            UnKnow_ToolKit,
            Virtual_COM_Port,
            Rcss_B2B_ToolKit,
            RCSS_B2C_ToolKit

        }
        public class DataPacket_RcssKit
        {
            public Version Rcss_Kit_HardwareVersion { get; set; }
            public Version Rcss_Kit_FirmwareVersion { get; set; }
            public ToolKitType Rcss_Kit_Type { get; set; }
            public string Rcss_Kit_FullName { get; set; }
            public DateTime Rcss_Kit_ManufactureDate { get; set; }
            public string Rcss_Kit_ManufactureName { get; set; }
            public int Rcss_Kit_SerialNumber { get; set; }
        }
        #endregion

        #region LEV Charger Information
        public enum ChargerType
        {
            UnKnow_charger,
            Normal_Charger,
            Smart_Charger
        }
        public class DataPacket_BatteryCharger
        {
            public ChargerType BCHG_ChargerType { get; set; }
            public string BCHG_VerdorName { get; set; }
            public string BCHG_Level_1_Voltage { get; set; }
            public string BCHG_Level_2_Voltage { get; set; }
            public string BCHG_Diagnosed_State { get; set; }
        }
        #endregion

        #region RCSS Application Information
        public enum OS_SystemType
        {
            Unknow_System_OS,
            Windows_XP,
            Window_Vista,
            Window_7,
            Window_8,
            Mac_OS
        }
        public enum ProgramType
        {
            UnKnow_Application,
            LEV_RCSS_B2B_App,
            LEV_RCSS_B2C_App,
            LEV_RCSS_Charger_Diagnosis_App
        }
        public class DataPacket_RcssApplication
        {
            public ProgramType Rcss_App_Type;
            public Version Rcss_App_SoftwareVersion { get; set; }
            public string Rcss_RMA_BatteryBarCode { get; set; }
            public string Rcss_RMA_StoreName { get; set; }
            public string Rcss_RMA_Country { get; set; }
            public string Rcss_RMA_City { get; set; }
            public string Rcss_RMA_Reason { get; set; }
            public string Rcss_RMA_StoreEmail { get; set; }
            public string Rcss_RMA_StoreAddress { get; set; }

            public TimeZone Rcss_System_TimeZone { get; set; }
            public string Rcss_System_MachineName { get; set; }
            public OS_SystemType Rcss_System_OS { get; set; }
            public string Rcss_System_OS_FullName { get; set; }
            //public string Rcss_System_Diagnosed_State { get; set; }
        }
        #endregion
        #region RCSS Application RMA Image Information
        public class DataPacket_RcssApp_RMA_Image
        {
            public ProgramType Rcss_App_Type;
            public Version Rcss_App_SoftwareVersion { get; set; }
            public string Rcss_RMA_BatteryBarCode { get; set; }
            public string Rcss_RMA_ImageFiles;
            public string Rcss_RMA_ImageDescription;
            public byte[] Rcss_RMA_ImageBody;
        }
        #endregion
        #region RCSS Diagnosed Result Information
        public class DataPacket_RcssDiagnosedResult
        {
            public int Rcss_Diag_Healthy_Score { get; set; }
            public string Rcss_Diag_EnduranceStatus { get; set; }
            public int Rcss_Diag_Voltage_Chk_Score { get; set; }
            public int Rcss_Diag_Current_Chk_Score { get; set; }
            public int Rcss_Diag_Temperature_Chk_Score { get; set; }
            public int Rcss_Diag_Usage_Freq_Chk_Score { get; set; }
            public int Rcss_Diag_Total_Chk_Score { get; set; }
            public int Rcss_Diag_Total_Chk_Score { get; set; }
            public string Rcss_Diag_Check_Suggestion { get; set; }
        }
        #endregion

        #region Client Transmitting Packets Information
        public enum ClientTransmittingType
        {
            UnKnow_Transmitting_Data,
            RCSS_Full_Diagnosed_Data,
            RCSS_Battery_Diagnosed_Data,
            RCSS_Charger_Diagnosed_Data
        }
        public class DataPacket_Client_TransmittingPackets
        {
            public ClientTransmittingType CTran_TransmittingDataType;
            public DataPacket_RcssApplication CTran_RcssApplicationData;
            public DataPacket_BatteryPack CTran_BatteryPackData;
            public DataPacket_RcssKit CTran_RcssKitData;
            public DataPacket_BatteryCharger CTran_BatteryChargerData;
            public DataPacket_RcssDiagnosedResult CTran_RcssDiagnosedResultData;
        }
        #endregion


        #region RCSS Application Information
        public enum ServerResponseInformType
        {
            RCSS_Result,
            RCSS_Exception,
            RCSS_Command,

        }
        public class DataPacket_ServerResponse
        {
            public int Svr_Response_Type { get; set; }

            public string Svr_RcssResult_Inform { get; set; }

            public int Svr_RcssException_Code { get; set; }
            public string Svr_RcssException_Inform { get; set; }

            public int Svr_RcssCommand_Code { get; set; }
        }
        #endregion     
    }//namespace LEVNetDataPacket
}//namespace LEVNet
